/** layui-v2.3.0 MIT License By https://www.layui.com */
layui.define('jquery', function (e) {
  'use strict'
  var a = layui.jquery,
    i = {
      config: {},
      index: layui.rate ? layui.rate.index + 1e4 : 0,
      set: function (e) {
        var i = this
        return (i.config = a.extend({}, i.config, e)), i
      },
      on: function (e, a) {
        return layui.onevent.call(this, n, e, a)
      }
    },
    l = function () {
      var e = this,
        a = e.config
      return {
        setvalue: function (a) {
          e.setvalue.call(e, a)
        },
        config: a
      }
    },
    n = 'rate',
    t = 'layui-rate',
    o = 'layui-icon-rate',
    s = 'layui-icon-rate-solid',
    u = 'layui-icon-rate-half',
    r = 'layui-icon-rate-solid layui-icon-rate-half',
    c = 'layui-icon-rate-solid layui-icon-rate',
    f = 'layui-icon-rate layui-icon-rate-half',
    v = function (e) {
      var l = this
      ;(l.index = ++i.index),
        (l.config = a.extend({}, l.config, i.config, e)),
        l.render()
    }
  ;(v.prototype.config = {
    length: 5,
    text: !1,
    readonly: !1,
    half: !1,
    value: 0,
    theme: ''
  }),
    (v.prototype.render = function () {
      var e = this,
        i = e.config,
        l = i.theme ? 'style="color: ' + i.theme + ';"' : ''
      ;(i.elem = a(i.elem)),
        parseInt(i.value) !== i.value &&
          (i.half ||
            (i.value =
              Math.ceil(i.value) - i.value < 0.5
                ? Math.ceil(i.value)
                : Math.floor(i.value)))
      for (
        var n =
            '<ul class="layui-rate" ' + (i.readonly ? 'readonly' : '') + '>',
          u = 1;
        u <= i.length;
        u++
      ) {
        var r =
          '<li class="layui-inline"><i class="layui-icon ' +
          (u > Math.floor(i.value) ? o : s) +
          '" ' +
          l +
          '></i></li>'
        i.half && parseInt(i.value) !== i.value && u == Math.ceil(i.value)
          ? (n =
              n +
              '<li><i class="layui-icon layui-icon-rate-half" ' +
              l +
              '></i></li>')
          : (n += r)
      }
      n +=
        '</ul>' +
        (i.text ? '<span class="layui-inline">' + i.value + '星' : '') +
        '</span>'
      var c = i.elem,
        f = c.next('.' + t)
      f[0] && f.remove(),
        (e.elemTemp = a(n)),
        (i.span = e.elemTemp.next('span')),
        i.setText && i.setText(i.value),
        c.html(e.elemTemp),
        c.addClass('layui-inline'),
        i.readonly || e.action()
    }),
    (v.prototype.setvalue = function (e) {
      var a = this,
        i = a.config
      ;(i.value = e), a.render()
    }),
    (v.prototype.action = function () {
      var e = this,
        i = e.config,
        l = e.elemTemp,
        n = l.find('i').width()
      l.children('li').each(function (e) {
        var t = e + 1,
          v = a(this)
        v.on('click', function (e) {
          if (((i.value = t), i.half)) {
            var o = e.pageX - a(this).offset().left
            o <= n / 2 && (i.value = i.value - 0.5)
          }
          i.text && l.next('span').text(i.value + '星'),
            i.choose && i.choose(i.value),
            i.setText && i.setText(i.value)
        }),
          v.on('mousemove', function (e) {
            if (
              (l.find('i').each(function () {
                a(this).addClass(o).removeClass(r)
              }),
              l.find('i:lt(' + t + ')').each(function () {
                a(this).addClass(s).removeClass(f)
              }),
              i.half)
            ) {
              var c = e.pageX - a(this).offset().left
              c <= n / 2 && v.children('i').addClass(u).removeClass(s)
            }
          }),
          v.on('mouseleave', function () {
            l.find('i').each(function () {
              a(this).addClass(o).removeClass(r)
            }),
              l.find('i:lt(' + Math.floor(i.value) + ')').each(function () {
                a(this).addClass(s).removeClass(f)
              }),
              i.half &&
                parseInt(i.value) !== i.value &&
                l
                  .children('li:eq(' + Math.floor(i.value) + ')')
                  .children('i')
                  .addClass(u)
                  .removeClass(c)
          })
      })
    }),
    (v.prototype.events = function () {
      var e = this
      e.config
    }),
    (i.render = function (e) {
      var a = new v(e)
      return l.call(a)
    }),
    e(n, i)
})
